/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.socialfun.entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author hp
 */
@Entity
@Table(name = "evento")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Evento.findAll", query = "SELECT e FROM Evento e"),
    @NamedQuery(name = "Evento.findByEvCodigo", query = "SELECT e FROM Evento e WHERE e.evCodigo = :evCodigo"),
    @NamedQuery(name = "Evento.findByEvDescripcion", query = "SELECT e FROM Evento e WHERE e.evDescripcion = :evDescripcion"),
    @NamedQuery(name = "Evento.findByEvFechaInicio", query = "SELECT e FROM Evento e WHERE e.evFechaInicio = :evFechaInicio"),
    @NamedQuery(name = "Evento.findByEvEstado", query = "SELECT e FROM Evento e WHERE e.evEstado = :evEstado"),
    @NamedQuery(name = "Evento.findByEvPuntos", query = "SELECT e FROM Evento e WHERE e.evPuntos = :evPuntos"),
    @NamedQuery(name = "Evento.findByEvFoto", query = "SELECT e FROM Evento e WHERE e.evFoto = :evFoto"),
    @NamedQuery(name = "Evento.findByEvFechaFin", query = "SELECT e FROM Evento e WHERE e.evFechaFin >= :evFechaFin"),
    @NamedQuery(name = "Evento.RecuperarEventoPorSucursal", query = "SELECT e FROM Evento e WHERE e.suCodigo.suCodigo = :suCodigo order by e.evCodigo desc"),
    @NamedQuery(name = "Evento.RecuperarEventoSucursal", query = "SELECT e FROM Evento e WHERE e.suCodigo.suCodigo = :suCodigo and e.evFechaFin >= :fecha")})
public class Evento implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "EV_CODIGO")
    private Integer evCodigo;
    @Basic(optional = false)
    @Column(name = "EV_DESCRIPCION")
    private String evDescripcion;
    @Basic(optional = false)
    @Column(name = "EV_FECHA_INICIO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date evFechaInicio;
    @Basic(optional = false)
    @Column(name = "EV_ESTADO")
    private String evEstado;
    @Basic(optional = false)
    @Column(name = "EV_PUNTOS")
    private int evPuntos;
    @Basic(optional = false)
    @Column(name = "EV_FOTO")
    private String evFoto;
    @Basic(optional = false)
    @Column(name = "EV_FECHA_FIN")
    @Temporal(TemporalType.TIMESTAMP)
    private Date evFechaFin;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "evCodigo")
    private List<EventoUsuario> eventoUsuarioList;
    @JoinColumn(name = "SU_CODIGO", referencedColumnName = "SU_CODIGO")
    @ManyToOne(optional = false)
    private Sucursal suCodigo;

    public Evento() {
    }

    public Evento(Integer evCodigo) {
        this.evCodigo = evCodigo;
    }

    public Evento(Integer evCodigo, String evDescripcion, Date evFechaInicio, String evEstado, int evPuntos, String evFoto, Date evFechaFin) {
        this.evCodigo = evCodigo;
        this.evDescripcion = evDescripcion;
        this.evFechaInicio = evFechaInicio;
        this.evEstado = evEstado;
        this.evPuntos = evPuntos;
        this.evFoto = evFoto;
        this.evFechaFin = evFechaFin;
    }

    public Integer getEvCodigo() {
        return evCodigo;
    }

    public void setEvCodigo(Integer evCodigo) {
        this.evCodigo = evCodigo;
    }

    public String getEvDescripcion() {
        return evDescripcion;
    }

    public void setEvDescripcion(String evDescripcion) {
        this.evDescripcion = evDescripcion;
    }

    public Date getEvFechaInicio() {
        return evFechaInicio;
    }

    public void setEvFechaInicio(Date evFechaInicio) {
        this.evFechaInicio = evFechaInicio;
    }

    public String getEvEstado() {
        return evEstado;
    }

    public void setEvEstado(String evEstado) {
        this.evEstado = evEstado;
    }

    public int getEvPuntos() {
        return evPuntos;
    }

    public void setEvPuntos(int evPuntos) {
        this.evPuntos = evPuntos;
    }

    public String getEvFoto() {
        return evFoto;
    }

    public void setEvFoto(String evFoto) {
        this.evFoto = evFoto;
    }

    public Date getEvFechaFin() {
        return evFechaFin;
    }

    public void setEvFechaFin(Date evFechaFin) {
        this.evFechaFin = evFechaFin;
    }

    @XmlTransient
    public List<EventoUsuario> getEventoUsuarioList() {
        return eventoUsuarioList;
    }

    public void setEventoUsuarioList(List<EventoUsuario> eventoUsuarioList) {
        this.eventoUsuarioList = eventoUsuarioList;
    }

    public Sucursal getSuCodigo() {
        return suCodigo;
    }

    public void setSuCodigo(Sucursal suCodigo) {
        this.suCodigo = suCodigo;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (evCodigo != null ? evCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Evento)) {
            return false;
        }
        Evento other = (Evento) object;
        if ((this.evCodigo == null && other.evCodigo != null) || (this.evCodigo != null && !this.evCodigo.equals(other.evCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.ec.socialfun.entidades.Evento[ evCodigo=" + evCodigo + " ]";
    }
}
